package com.service.bean.signal;

import java.sql.Timestamp;
import java.util.Date;

import com.service.other.Logger;

/**
 * 当前Gps数据与前一条Gps数据之间的变化量
 * @author lj
 * Created on 2015年6月4日
 */
public class GpsSignalWork {
	/**
	 * 当前Gps数据的主键Id
	 */
	public String signalId;
	/**
	 * 当前Gps数据的Gps时间
	 */
	public Date gpsTime;
	/**
	 * 当前Gps数据的设备Id
	 */
	public String equipmentId;
	/**
	 * 工作状态
	 */
	public int isInWork;
	/**
	 * Acc状态
	 */
	public int accStatus;
	/**
	 * 当前车速
	 */
	public double speed;
	/**
	 * 总里程
	 */
	public double totalMile;
	/**
	 * gps工作里程变化量
	 */
	public double workMile;
	/**
	 * 脉冲工作里程变化量
	 */
	public double workMile2;
	/**
	 * 行驶时长(速度不为0的持续时间)
	 */
	public long driveTime;
	/**
	 * 停车时长(速度为0的时间)
	 */
	public long stopTime;
	/**
	 * 工作时长
	 */
	public long workTime;
	/**
	 * 出勤时长
	 */
	public long outWorkTime;
	/**
	 * 非工作时长
	 */
	public long noWorkTime;
	/**
	 * 工作状态中，速度为0的时长
	 */
	public long workStopTime;
	/**
	 * 非工作状态中，速度为0的时长
	 */
	public long noWorkStopTime;
	/**
	 * 非工作状态时行驶的gps里程变化量
	 */
	public double noWorkMile;
	/**
	 * 非工作状态时行驶的脉冲里程变化量
	 */
	public double noWorkMile2;
	/**
	 * 最新Gps数据中的油量
	 */
	public double realOilCal;
	/**
	 * 工作状态中的油位变化量
	 */
	public double workOilChange;
	/**
	 * 非工作状态时的油位变化量
	 */
	public double noWorkOilChange;
	/**
	 * 当前Gps数据中的工作区域Id
	 */
	public String areaId;
	/**
	 * 当前Gps数据是否在工作区域中
	 */
	public int isInArea;
	/**
	 * 在同一工作区域内的行驶时长
	 */
	public long areaKeepTime;
	/**
	 * 在工作区域外的行驶时长
	 */
	public long outAreaKeepTime;
	/**
	 * 在同一工作区域内持续行驶的里程
	 */
	public double areaKeepMile;
	
	public long allAreaKeepTime;
	
	public double allAreaKeepMile;
	
	public double outAllAreaKeepMile;
	/**
	 * 当前Gps数据中的工作路段Id
	 */
	public String roadId;
	/**
	 * 当前Gps数据是否在工作路段中
	 */
	public int isInRoad;
	/**
	 * 在工作路段内的行驶时长
	 */
	public long roadKeepTime;
	/**
	 * 在工作路段内持续行驶的里程变化量
	 */
	public double roadKeepMile;
	/**
	 * 出勤里程
	 */
	public double outWorkMile;
	/**
	 * 油位变化量
	 */
	public double oilChange;	
	/**
	 * gps里程变化量
	 */
	public double mileChange;
	/**
	 * 停车时长的累计
	 */
	public long sumStopTime;
	
	/**
	 * 工作状态中，速度为0的时长的累计
	 */
	public long sumWorkStopTime;
	
	/**
	 * 是否正常数据
	 */
	public int isOilEx;	
	
	@SuppressWarnings("deprecation")
	public Object[] getAll() {
		Object[] obj = new Object[32];
		try{
		obj[0] = signalId;
		obj[1] = gpsTime == null ? gpsTime : "'" + new Timestamp(gpsTime.getTime()) + "'";
		obj[2] = equipmentId==null ? equipmentId : "'" + equipmentId + "'";
		obj[3] = String.valueOf(workMile);
		obj[4] = String.valueOf(workMile2);
		obj[5] = String.valueOf(driveTime);
		obj[6] = String.valueOf(stopTime);
		obj[7] = String.valueOf(workTime);
		obj[8] = String.valueOf(noWorkTime);
		obj[9] = String.valueOf(workStopTime);
		obj[10] = String.valueOf(noWorkStopTime);
		obj[11] = String.valueOf(noWorkMile);
		obj[12] = String.valueOf(noWorkMile2);
		obj[13] = String.valueOf(realOilCal);
		obj[14] = String.valueOf(workOilChange);
		obj[15] = String.valueOf(noWorkOilChange);
		obj[16] = areaId==null ? areaId : "'" + areaId + "'";
		obj[17] = isInArea;
		obj[18] = String.valueOf(areaKeepTime);
		obj[19] = String.valueOf(areaKeepMile);
		obj[20] = String.valueOf(allAreaKeepTime);
		obj[21] = String.valueOf(allAreaKeepMile);
		obj[22] = String.valueOf(outAreaKeepTime);
		obj[23] = String.valueOf(outAllAreaKeepMile);
		obj[24] = String.valueOf(outWorkMile);
		obj[25] = String.valueOf(outWorkTime);
		obj[26] = this.gpsTime.getMonth()+1;
		obj[27] = accStatus;
		obj[28] = isInWork;
		obj[29] = String.valueOf(speed);
		obj[30] = String.valueOf(totalMile);
		obj[31] = isOilEx;
		}catch(Exception e){
			Logger.err(e);
		}	
//		obj[24] = roadId==null ? roadId : "'" + roadId + "'";
//		obj[25] = isInRoad;
//		obj[26] = String.valueOf(roadKeepTime);
//		obj[27] = String.valueOf(roadKeepMile);
//		obj[28] = String.valueOf(outWorkMile);
//		obj[29] = String.valueOf(outWorkTime);
		return obj;
	}
	
}
